﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using BE;
using System.Data;
using CrystalDecisions.Shared;

namespace UI.Tesoreria
{
    public partial class FrmComprobanteVenta : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                    IniciarTabla();
                    ViewState["IDTabla"] = 1;
                    LLenarComboPeriodos();
                    LLenarComboTipoComprobantes();
                    CargarConceptos();
                    txtFechaDocumento.Text = DateTime.Now.ToShortDateString();
					chkLicencia.Visible = false;
                    lblLicencia.Visible = false;

                    NumeracionActual();
               
            }
            else {
            }
        }


        private void IniciarTabla()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(System.String));
            dt.Columns.Add("Concepto", typeof(System.String));
            dt.Columns.Add("Monto", typeof(System.Decimal));
            dt.Columns.Add("checkPagoTotal", typeof(System.Boolean));
            dt.Columns.Add("checkPagoCuotas", typeof(System.Boolean));

            dt.Columns.Add("MontoPagado", typeof(System.Decimal));
            dt.Columns.Add("Observacion", typeof(System.String));
            dt.Columns.Add("IDDeuda", typeof(System.String));

            ViewState["TablaTemporal"] = dt;
        }


        private void GrabarGrillaEnDT()
        {
            DataTable dt = ViewState["TablaTemporal"] as DataTable;
            dt.Rows.Clear();
            foreach (GridViewRow row in GridDetalle.Rows)
            {
                /*String id = (String)GridDetalle.DataKeys[row.RowIndex].Value;
                TextBox txtConcepto = row.FindControl("txtConcepto") as TextBox;
                DropDownList drp = row.FindControl("comboConcepto") as DropDownList;
                TextBox txtMonto = row.FindControl("txtSueldo") as TextBox;*/
                
                //String id =(String) GridDetalle.DataKeys[row.RowIndex].Value;

                var llaves = GridDetalle.DataKeys[row.RowIndex].Values;
                String id = Convert.ToString(llaves[0]);
                String IDDeuda = Convert.ToString(llaves[1]);

                TextBox txtCpto = row.FindControl("txtConcepto") as TextBox;
                DropDownList drp = row.FindControl("comboConceptosItem") as DropDownList;
                TextBox txtMonto = row.FindControl("txtMonto") as TextBox;
                CheckBox checkPagoTotal = row.FindControl("checkPagoTotal") as CheckBox;
                TextBox txtMontoPagado = row.FindControl("txtMontoPagado") as TextBox;
                TextBox txtObservacion = row.FindControl("txtObservacion") as TextBox;

                CheckBox checkPagoCuotas = row.FindControl("checkPagoCuotas") as CheckBox;

                DataRow datarow = dt.NewRow();
                datarow["id"] = id;
                datarow["Concepto"] = drp.SelectedItem.Value;
                datarow["Monto"] = (txtMonto.Text != "") ? Convert.ToDecimal(txtMonto.Text) : 0;
                datarow["checkPagoTotal"] = checkPagoTotal.Checked;
                datarow["checkPagoCuotas"] = checkPagoCuotas.Checked;

                datarow["MontoPagado"] = (txtMontoPagado.Text != "") ? Convert.ToDecimal(txtMontoPagado.Text) : 0;
                datarow["Observacion"] = (txtObservacion.Text != "") ? txtObservacion.Text : "";
                datarow["IDDeuda"] = IDDeuda ;


                dt.Rows.Add(datarow);
            }
        }

     protected void btnAgregarItem_Click(object sender, ImageClickEventArgs e)
            {
                labelErrorCp.Text = "";
                try
                {
                    GrabarGrillaEnDT();
                    DataTable dt = ViewState["TablaTemporal"] as DataTable;
                    DataRow row = dt.NewRow();

                    Int32 indice = 0;
                    indice = ((Int32)ViewState["IDTabla"]) + 1;

                    ViewState["IDTabla"] = indice;
                    row["id"] = indice.ToString();
                    row["IDDeuda"] = "0";
                    row["checkPagoTotal"] = false;
                    row["checkPagoCuotas"] = false;

                    
                    dt.Rows.Add(row);
                    GridDetalle.DataSource = dt;
                    GridDetalle.DataBind();


                }
                catch (Exception ex)
                {
                    labelErrorCp.Text = ex.Message.ToString();
                }
            }

        //private void LLenarDesdeCp()
        //{
        //    ComprobanteVenta cp = (ComprobanteVenta)Session["Cp"];
        //    DataTable dt = new DataTable();
        //    dt.Columns.Add("id", typeof(System.String));

        //    dt.Columns.Add("Concepto", typeof(System.String));
        //    dt.Columns.Add("Monto", typeof(System.Decimal));
        //    dt.Columns.Add("checkPagoTotal", typeof(System.Boolean));
        //    dt.Columns.Add("MontoPagado", typeof(System.Decimal));
        //    dt.Columns.Add("Observacion", typeof(System.String));
        //    foreach (ItemComprobanteVenta item in cp.Items)
        //    {
        //        DataRow row = dt.NewRow();

        //        row["id"] = item.ID;

        //        if (item.ConceptoTesoreria != null)
        //        {
        //            row["Concepto"] = item.ConceptoTesoreria.ID;
        //        }
        //        else
        //        {

        //            row["Concepto"] = "";
        //        }
        //        row["Monto"] = Math.Round(item.MontoTotal);
        //        row["checkPagoTotal"] = item.PagoTotal;
        //        row["MontoPagado"] = Math.Round(item.MontoPagado, 2);
        //        row["Observacion"] = item.Observacion;
        //        dt.Rows.Add(row);
        //    }
        //    GridDetalle.DataSource = dt;
        //    GridDetalle.DataBind();

        //    Session["DataPersona"] = dt;

        //}

        private void LLenarComboPeriodos()
        {
            ComprobanteVenta_BL cp = new ComprobanteVenta_BL();
            List<Periodo> lista = cp.ObtenerPeriodos();
            ComboPeriodo.DataSource = lista;
            ComboPeriodo.DataTextField = "Semestre";
            ComboPeriodo.DataValueField = "ID";
            ComboPeriodo.DataBind();
        }
        private void CargarConceptos() { 
           ComprobanteVenta_BL cpb=new ComprobanteVenta_BL();
           List<ConceptoTesoreria> lista = cpb.ObtenerConceptos();
           ViewState["ConceptosTesoreria"] = lista;
        }
        private void LLenarComboTipoComprobantes()
        {
            ComprobanteVenta_BL cp = new ComprobanteVenta_BL();
            List<TipoDocumento> lista = cp.ObtenerTipoDocumentos();
            ComboTipoDocumento.DataSource = lista;
            ComboTipoDocumento.DataTextField = "Nombre";
            ComboTipoDocumento.DataValueField = "IDTipoCp";
            ComboTipoDocumento.DataBind();
        }
        protected void CheckClienteReferencial_CheckedChanged(object sender, EventArgs e)
        {

            ViewState["SocioNegocioSeleccionado"] = null;
            txtNombreCliente.Text = "";

            if (CheckClienteReferencial.Checked)
            {
                txtNombreCliente.Enabled = true;
                btnBuscarAlumno.Visible = false;
            }
            else {
                txtNombreCliente.Enabled = false;
                btnBuscarAlumno.Visible = true;
            }

        }
       
        private void Totales(ComprobanteVenta cp) {
            Decimal SubTotal = 0;
            Decimal Impuesto = 0;
            Decimal Total = 0;
            cp.PorcentajeImpuesto = cp.TipoDocumento.Impuesto;

            foreach (ItemComprobanteVenta item in cp.Items)
            {
                SubTotal += item.MontoPagado;
            }
            Impuesto = SubTotal * (cp.PorcentajeImpuesto/100);
            Total = SubTotal + Impuesto;

            cp.SubTotal = SubTotal;
            cp.Impuesto = Impuesto;
            cp.Total = Total;
        }
    
     
       protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            TextBox txtCpto = e.Row.FindControl("txtConcepto") as TextBox;
            DropDownList drp = e.Row.FindControl("comboConceptosItem") as DropDownList; 
            if (drp != null)
            {
                ComprobanteVenta_BL cpb=new ComprobanteVenta_BL();
                drp.DataSource = (List<ConceptoTesoreria>) ViewState["ConceptosTesoreria"];
                drp.DataTextField = "Nombre";
                drp.DataValueField = "ID";
                drp.DataBind();
                drp.Items.Insert(0, "--Seleccionar Un Concepto--");
                drp.SelectedIndex = drp.Items.IndexOf(drp.Items.FindByValue(txtCpto.Text));
            }

            CheckBox checkPagoTotal = e.Row.FindControl("checkPagoTotal") as CheckBox;
            TextBox txtMontoPagado = e.Row.FindControl("txtMontoPagado") as TextBox;
            TextBox txtMonto = e.Row.FindControl("txtMonto") as TextBox;

            CheckBox checkPagoCuotas = e.Row.FindControl("checkPagoCuotas") as CheckBox;
          

            if (checkPagoTotal != null)
            {
                txtMonto.Enabled = true;
                if (checkPagoTotal.Checked)
                {
                    txtMontoPagado.Enabled = false;
                }
                else
                {
                    txtMontoPagado.Enabled = true;
                }
            
            }

            if (checkPagoCuotas != null)
            {
                checkPagoCuotas.Enabled = false;
                if (checkPagoCuotas.Checked)
                {
                    drp.Enabled = false;
                    txtMonto.Enabled = false;
                }
                else
                {
                    drp.Enabled = true;
                    txtMonto.Enabled = true;
                }
            }



        }
       private void GrabarCabecera()
       {
           ComprobanteVenta_BL cpb = new ComprobanteVenta_BL();
           ComprobanteVenta cp = (ComprobanteVenta)Session["Cp"];
           cp.TipoDocumento = cpb.ObtenerTipoDocumentoXid(ComboTipoDocumento.SelectedItem.Value);
           cp.FechaCreacion = DateTime.Now;
           cp.Estado_Documento = "PENDIENTE";
           cp.EsClienteReferencial = CheckClienteReferencial.Checked;
           cp.NombreCliente = txtNombreCliente.Text;
           cp.Periodo = cpb.obtenerPeriodoxId(ComboPeriodo.SelectedItem.Value);

       }
       private bool GenerarReporteComprobanteVenta(String idComprobanteVenta)
       {
           labelErrorCp.Text = "";
           try
           {
               ReporteComprobanteVenta reporte = new ReporteComprobanteVenta();
               ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();

               DataTable data = rcv.ListaComprobanteVenta(idComprobanteVenta);

               if (data.Rows.Count == 0)
               {
                   ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                   return false;
               }

               reporte.SetDataSource(data);

               //reporte.DataDefinition.FormulaFields["Docente"].Text = "'" + nombreProfeReporte + "'";

               ExportOptions CrExportOptions;
               DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
               PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
               String rutaarchivo = System.IO.Path.GetTempFileName() + "CpVenta-" + Guid.NewGuid() + ".pdf";
               CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

               Session["RutaReporte"] = rutaarchivo;
               Session["Reporte"] = reporte;


               CrExportOptions = reporte.ExportOptions;
               {
                   CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                   CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                   CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

                   CrExportOptions.FormatOptions = CrFormatTypeOptions;
               }

               reporte.Export();

               return true;
           }
           catch (Exception ex)
           {
               labelErrorCp.Text = ex.Message;
               return false;
           }
       }
       private void GenerarReporteComprobanteVentaDESCARGA(String idComprobanteVenta)
       {
               ReporteComprobanteVenta reporte = new ReporteComprobanteVenta();
               ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();
               DataTable data = rcv.ListaComprobanteVenta(idComprobanteVenta);

               reporte.SetDataSource(data);
                System.IO.MemoryStream     rptStream=new  System.IO.MemoryStream();
                rptStream = (System.IO.MemoryStream) reporte.ExportToStream(ExportFormatType.PortableDocFormat);
                Response.Clear();
                Response.Buffer = true;
                Response.ContentType = "application/pdf";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + "ImpresionCpVenta" + idComprobanteVenta + ".pdf");

                Response.BinaryWrite(rptStream.ToArray());
                reporte.Close();
                Response.End();
       }

        private void ValidarComprobante(ComprobanteVenta cp){

            if (cp.EsClienteReferencial)
            {
                if (cp.NombreCliente == "")
                {
                    throw new Exception("Por favor seleccione un cliente");
                }
            }
            else {
                if (cp.SocioNegocio == null) {
                    throw new Exception("Por favor seleccione un cliente");
                }
            }

            foreach (ItemComprobanteVenta item in cp.Items)
            {
                if (item.ConceptoTesoreria == null) {
                    throw new Exception("Los items deben tener un concepto seleccionado");
                }

                if (item.MontoPagado <= 0)
                {
                    throw new Exception("El monto pagado debe ser mayor a S/0.00 nuevos soles");
                }


                if (item.MontoTotal < item.MontoPagado)
                {
                    throw new Exception("El monto pagado no debe ser mayor al Monto Total...");
                }


                if(item.ConceptoTesoreria.Codigo.Equals("MATRICULA")){
                    if (cp.SocioNegocio == null) {

                        throw new Exception("El concepto"+item.ConceptoTesoreria.Codigo+" requiere que seleccione un alumno y no acepta clientes referenciales");
                    }  
                }

            }

            if (cp.Items.Count <= 0) {
                throw new Exception("El comprobantes no tiene ningun item");
            }


        }

       protected void btnGuardarCpVenta_Click(object sender, ImageClickEventArgs e)
        {

            labelErrorCp.Text = "";
            GrabarGrillaEnDT();
            String tramsaccioncompleta =Convert.ToString(Session["GRABO"]);

                if (tramsaccioncompleta.Equals("SI")) {
                    labelErrorCp.Text = "YA GRABO ESTE DOCUMENTO";
                    return;
                }  
          


            try
            {
           
            ComprobanteVenta_BL cpb = new ComprobanteVenta_BL();
            //ComprobanteVenta cp = (ComprobanteVenta)Session["Cp"];

            ComprobanteVenta cp = new ComprobanteVenta();

           //CABECERA
            cp.TipoDocumento = cpb.ObtenerTipoDocumentoXid(ComboTipoDocumento.SelectedItem.Value);
            cp.FechaCreacion = DateTime.Now;
            cp.Estado_Documento = "PENDIENTE";
            cp.EsClienteReferencial = CheckClienteReferencial.Checked;
            cp.CreadoPor = User.Identity.Name;

            if (cp.EsClienteReferencial == false) {
                if(!txtNombreCliente.Text.Equals("")){
                    cp.SocioNegocio = (SocioNegocio)ViewState["SocioNegocioSeleccionado"];
                }
            }
            cp.NombreCliente = txtNombreCliente.Text;
            cp.Periodo = cpb.obtenerPeriodoxId(ComboPeriodo.SelectedItem.Value);

           //DETALLE
            Decimal SubTotal = 0;
            Decimal Impuesto = 0;
            Decimal Total = 0;
            cp.PorcentajeImpuesto = cp.TipoDocumento.Impuesto;

            DataTable dt = ViewState["TablaTemporal"] as DataTable;
            foreach (DataRow item in dt.Rows)
            {
                ItemComprobanteVenta itemcpventa = cp.AgregarItem();
                ConceptoTesoreria cpto = cpb.obtenerConceptoTesoreriaxId(item["Concepto"].ToString());
                itemcpventa.ConceptoTesoreria = cpto;
                if (cpto != null) { 
                itemcpventa.Concepto = cpto.Nombre;
                }
                itemcpventa.MontoTotal = Convert.ToDecimal(item["Monto"]);
                itemcpventa.MontoPagado = Convert.ToDecimal(item["MontoPagado"]);
                itemcpventa.PagoTotal = Convert.ToBoolean(item["checkPagoTotal"]);

                if (itemcpventa.MontoTotal == itemcpventa.MontoPagado) {
                    itemcpventa.PagoTotal = true;
                }

                Int32 IDDeuda = Convert.ToInt32(item["IDDeuda"]);
                if (IDDeuda > 0)
                {
                    itemcpventa.idDeuda = Convert.ToString(IDDeuda);
                }
                else {
                    itemcpventa.idDeuda = null;
                }


                itemcpventa.idDeuda = Convert.ToString(item["IDDeuda"]);
                itemcpventa.Observacion = item["Observacion"].ToString();
                SubTotal += itemcpventa.MontoPagado;
            }
            Impuesto = SubTotal * (cp.PorcentajeImpuesto / 100);
            Total = SubTotal + Impuesto;
            cp.SubTotal = SubTotal;
            cp.Impuesto = Impuesto;
            cp.Total = Total;


            ValidarComprobante(cp);

            cpb.Insertar(cp);
            Session["GRABO"] = "SI";
            GenerarReporteComprobanteVentaDESCARGA(cp.IDCp.ToString());

            }
            catch (Exception ex)
            {
                labelErrorCp.Text = "Error: ";
                labelErrorCp.Text += ex.Message.ToString();
            }  
        }
       private void LimpiarControles() {

           ComboPeriodo.SelectedItem.Value = null;
           CheckClienteReferencial.Checked = false;
           txtNombreCliente.Text = null;
           txtCodigo0.Text = null;
           txtNombreCliente.Text = null;
           chkLicencia.Checked = false;
           GridDetalle.DataSource = null;
           GridDetalle.DataBind();
           Session["Cp"] = null;
           Session["ConceptosTesoreria"] = null;


           ComprobanteVenta cp = new ComprobanteVenta();
           Session["Cp"] = cp;

		   chkLicencia.Visible = false;
           lblLicencia.Visible = false;


           CargarConceptos();
       
       }
       protected void ImageButton4_Click(object sender, ImageClickEventArgs e)
       {
           Response.Redirect("frmComprobanteVentaLista.aspx");
       }
       protected void btnBuscarModal_Click(object sender, EventArgs e)
       {
           lblMensajeModal.Text = "";
           Alumno_BL OBJ = new Alumno_BL();
           DataTable dato = new DataTable();

           lblErrorValida.Text = "";
           ComprobanteVenta_BL obj2 = new ComprobanteVenta_BL();
           DataTable dato2 = new DataTable();
           DataTable dato3 = new DataTable();
           DataTable dato6 = new DataTable();

           string codigo = "";
           if (txtModalCodigo.Text.Trim().Length == 0)
           {
               codigo = "TODOS";
           }
           else
           {
               codigo = txtModalCodigo.Text.Trim();
           }

           dato2 = obj2.Validar3omasAsignaturaMismoCiclo(codigo);
           dato3 = obj2.Validar6cursoenlacarrera(codigo);
           dato6 = obj2.Validar1cursoxterceravez(codigo);


           Int32 cursos = 0;
           foreach (DataRow row in dato2.Rows)
           {
               cursos = Convert.ToInt32(row[0]);
               //lstPedidos.Items.Add((row[0].ToString()) + ";" + row[1].ToString());
               if (cursos > 2)
               {
                   lblMensajeModal.Text = "Impedido, desaprobo 3 o mas asignaturas en un mismo ciclo";
                   txtModalCodigo.Focus();
                   return;
               }
               else
               {
               }
           }

           Int32 cursosDesaprobados = dato3.Rows.Count;
           if (cursosDesaprobados > 5)
           {
               lblMensajeModal.Text = "Impedido, Desaprobo la sexta asignatura en lo que va de la carrera ";
               txtModalCodigo.Focus();
               return;
           }

           Int32 cursoterceravez = dato6.Rows.Count;
           if (cursoterceravez > 2)
           {
               lblMensajeModal.Text = "Impedido, Desaprobo una asignatura por tercera vez";
               txtModalCodigo.Focus();
               return;
           }


           dato = OBJ.DATA_MAESTRO1_ListaAlumnos("TODOS", codigo);

           if (dato.Rows.Count == 0)
           {
               lblMensajeModal.Text = "Alumno no existe.";
               txtModalCodigo.Focus();
           }
           else
           {
               grvAgregaAlumnos.DataSource = dato;
               grvAgregaAlumnos.DataBind();
               lblErrorValida.Text = "";
           }
       }
       protected void grvAgregaAlumnos_SelectedIndexChanged(object sender, EventArgs e)
       {

           try
           {
               chkLicencia.Checked = false;
               string codigo = "";

               codigo = grvAgregaAlumnos.SelectedRow.Cells[1].Text;


               ComprobanteVenta_BL cpbl = new ComprobanteVenta_BL();
               BE.SocioNegocio sn = cpbl.ObtenerSocioNegocioXid(codigo);
               txtNombreCliente.Text = sn.ApellidoPaterno + " " + sn.ApellidoMaterno + "," + sn.Nombres;
               ViewState["SocioNegocioSeleccionado"] = sn;

               ComprobanteVenta_BL obj3 = new ComprobanteVenta_BL();
               DataTable dato4 = new DataTable();
               DataTable dato5 = new DataTable();
               DataTable dato7 = new DataTable();

               dato4 = obj3.Validar3omasAsignaturaMismoCiclo(codigo);
               dato5 = obj3.Validar6cursoenlacarrera(codigo);
               dato7 = obj3.Validar1cursoxterceravez(codigo);

               Int32 cursos = 0;
               foreach (DataRow row in dato4.Rows)
               {
                   cursos = Convert.ToInt32(row[0]);
                   if (cursos > 2)
                   {
                       lblErrorValida.Text = "Impedido, desaprobo 3 o mas asignaturas en un mismo ciclo";
                       txtNombreCliente.Text = "";



                       chkLicencia.Visible = true;
                       lblLicencia.Visible = true;
                       return;
                   }
                   else
                   {
                   }
               }


               Int32 cursosDesaprobados = dato5.Rows.Count;
               if (cursosDesaprobados > 5)
               {
                   lblErrorValida.Text = "Impedido, Desaprobo la sexta asignatura en lo que va de la carrera";
                   txtNombreCliente.Text = "";
                   chkLicencia.Visible = true;
                   lblLicencia.Visible = true;
                   return;
               }

               Int32 cursoterceravez2 = dato7.Rows.Count;
               if (cursosDesaprobados > 2)
               {
                   lblErrorValida.Text = "Impedido, Desaprobo una asignatura por tercera vez";
                   txtNombreCliente.Text = "";
                   chkLicencia.Visible = true;
                   lblLicencia.Visible = true;
                   return;
               }



               chkLicencia.Visible = false;
               lblLicencia.Visible = false;

               mpeAgregaAlumno.Hide();

           }
           catch (Exception ex)
           {
               labelErrorCp.Text = ex.Message;
           }
			
       }
       protected void btnBuscarAlumno_Click(object sender, ImageClickEventArgs e)
       {
           lblMensajeModal.Text = "";
           DataTable dato = new DataTable();
           grvAgregaAlumnos.DataSource = dato;
           grvAgregaAlumnos.DataBind();
           lblMensajeModal.Text = "";
           mpeAgregaAlumno.Show();
       }
       protected void btnSalir_Click(object sender, EventArgs e)
       {
           mpeAgregaAlumno.Hide();
       }
       protected void btnAgregarDeuda_Click(object sender, ImageClickEventArgs e)
       {
           labelErrorCp.Text = "";
           try
           {

               if (CheckClienteReferencial.Checked) {
                   throw new Exception("Un cliente referencial no genera deuda");
               }

               BE.SocioNegocio sn = (BE.SocioNegocio)ViewState["SocioNegocioSeleccionado"];
               if (sn == null) {
                   throw new Exception("Por favor seleccione un cliente");
               }

               ComprobanteVenta_BL cpbl = new ComprobanteVenta_BL();
               DataTable tabla = cpbl.listadoDeudaPersona(sn.IDSN.ToString(), ArmarFiltroDeudas());
               GridDeudas.DataSource = tabla;
               GridDeudas.DataBind();
               agregarDeuda.Show();

           }
           catch (Exception ex)
           {

               labelErrorCp.Text = ex.Message.ToString();
           }
       }



       private String ArmarFiltroDeudas() {
           String resultado = "0,";

           GrabarGrillaEnDT();

           DataTable dt = ViewState["TablaTemporal"] as DataTable;
           foreach (DataRow item in dt.Rows)
           {
               Int32 IDDeuda = Convert.ToInt32(item["IDDeuda"]);
               if (IDDeuda > 0)
               {
                   resultado += Convert.ToString(IDDeuda)+",";
               }
           }

           if (resultado.Length > 0) {
               resultado = resultado.Substring(0, (resultado.Length - 1));
               resultado = "(" + resultado + ")";
           }

           return resultado;
       }

       protected void GridDeudas_SelectedIndexChanged(object sender, EventArgs e)
       {

           labelErrorCp.Text = "";
           try
           {

               var llaves = GridDeudas.SelectedDataKey.Values;

               
               String MontoTotal = GridDeudas.SelectedRow.Cells[4].Text;
               String MontoPagado = GridDeudas.SelectedRow.Cells[5].Text;
               String MontoSaldo = GridDeudas.SelectedRow.Cells[6].Text;

               String IDConcepto = Convert.ToString(llaves[0]);
               String IDDeuda = Convert.ToString(llaves[1]);


               GrabarGrillaEnDT();
               DataTable dt = ViewState["TablaTemporal"] as DataTable;
               DataRow row = dt.NewRow();

               Int32 indice = 0;
               indice = ((Int32)ViewState["IDTabla"]) + 1;

               ViewState["IDTabla"] = indice;
               row["id"] = indice.ToString();
               row["Concepto"] = IDConcepto;
               row["Monto"] = MontoSaldo;
               row["IDDeuda"] = IDDeuda;
               row["checkPagoTotal"] = true;
               row["MontoPagado"] = MontoSaldo;
               row["checkPagoCuotas"] = true;
               
               dt.Rows.Add(row);

               GridDetalle.DataSource = dt;
               GridDetalle.DataBind();


               agregarDeuda.Hide();
           }
           catch (Exception ex)
           {
               labelErrorCp.Text = ex.Message.ToString();
           }

           
       }

       protected void ButtonSalirDeuda_Click(object sender, EventArgs e)
       {
           agregarDeuda.Hide();
       }

       protected void GridDetalle_Load(object sender, EventArgs e)
       {

       }


       protected void chk_OnCheckedMonto(object sender, EventArgs e)
       {
           labelErrorCp.Text = "";
           try
           {
               CheckBox ckeck = (CheckBox)sender;
               GridViewRow row = ((GridViewRow)((DataControlFieldCell)ckeck.Parent).Parent);
               var id = GridDetalle.DataKeys[row.RowIndex].Value.ToString();

               TextBox txtMontoPagado = row.FindControl("txtMontoPagado") as TextBox;
               TextBox txtMonto = row.FindControl("txtMonto") as TextBox;

               
               if (ckeck.Checked)
               {
                   txtMontoPagado.Text = txtMonto.Text;
                   txtMontoPagado.Enabled = false;
               }
               else {
                   txtMontoPagado.Text = "";
                   txtMontoPagado.Enabled = true;
               }

           }
           catch (Exception ex)
           {
               labelErrorCp.Text = ex.Message.ToString();
           }
       }


       protected void onComboConceptosSelected(object sender, EventArgs e)
       {
           labelErrorCp.Text = "";
           try
           {
               DropDownList combo = (DropDownList)sender;
               GridViewRow row = ((GridViewRow)((DataControlFieldCell)combo.Parent).Parent);
               var id = GridDetalle.DataKeys[row.RowIndex].Value.ToString();
               ComprobanteVenta_BL cpbl=new ComprobanteVenta_BL();
               ConceptoTesoreria cpteso= cpbl.obtenerConceptoTesoreriaxId(combo.SelectedValue);
               

               TextBox txtMontoPagado = row.FindControl("txtMontoPagado") as TextBox;
               TextBox txtMonto = row.FindControl("txtMonto") as TextBox;


               CheckBox checkPagoTotal = row.FindControl("checkPagoTotal") as CheckBox;
               TextBox txtObservacion = row.FindControl("txtObservacion") as TextBox;

               txtMonto.Text = cpteso.Monto.ToString();
               checkPagoTotal.Checked = false;
               txtMontoPagado.Text = "";
               txtObservacion.Text = "";

           }
           catch (Exception ex)
           {
               labelErrorCp.Text = ex.Message.ToString();
           }
       }

        
 
        
   protected void grvAgregaAlumnos_PageIndexChanging(object sender, GridViewPageEventArgs e)
       {           
           //GridView gv = (GridView)sender;
           //gv.PageIndex = e.NewPageIndex;
           //grvAgregaAlumnos.PageIndex = e.NewPageIndex;
           mpeAgregaAlumno.Show();
           
       }
        
       protected void chkLicencia_CheckedChanged(object sender, EventArgs e)
       {
           string codigo = "";
          codigo = grvAgregaAlumnos.SelectedRow.Cells[1].Text;

           if (chkLicencia.Checked)
           {          
                   ComprobanteVenta_BL cpbl1 = new ComprobanteVenta_BL();
                   BE.SocioNegocio sn = (BE.SocioNegocio)ViewState["SocioNegocioSeleccionado"];


                   txtNombreCliente.Text = sn.ApellidoPaterno + " " + sn.ApellidoMaterno + "," + sn.Nombres;          
           }
           else
           {
               txtNombreCliente.Text = "";
           }
       }

        protected void ImageButton5_Click(object sender, ImageClickEventArgs e)
        {
            Session["GRABO"]=null;
            Response.Redirect("FrmComprobanteVenta.aspx");

        }

        protected void GridDetalle_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            GrabarGrillaEnDT();
            String llave = (String)GridDetalle.DataKeys[e.RowIndex].Value;
            DataTable dt = ViewState["TablaTemporal"] as DataTable;

            foreach (DataRow item in dt.Rows)
            {
                String data = item.ItemArray[0].ToString();

                if (item["id"].ToString().Equals(llave))
                {

                    dt.Rows.Remove(item);
                    break;
                }
            }



            GridDetalle.DataSource = dt;
            GridDetalle.DataBind();

        }

        protected void GridDetalle_RowDeleted(object sender, GridViewDeletedEventArgs e)
        {
            GrabarGrillaEnDT();
            String llave = (String)GridDetalle.DataKeys[GridDetalle.SelectedRow.RowIndex].Value;
            DataTable dt = ViewState["TablaTemporal"] as DataTable;

            foreach (DataRow item in dt.Rows)
            {
                String data = item.ItemArray[0].ToString();

                if (item["id"].ToString().Equals(llave))
                {

                    dt.Rows.Remove(item);
                    break;
                }
            }



            GridDetalle.DataSource = dt;
            GridDetalle.DataBind();
        }

        protected void GridDetalle_SelectedIndexChanged(object sender, EventArgs e)
        {
            GrabarGrillaEnDT();
            String llave = (String)GridDetalle.DataKeys[GridDetalle.SelectedRow.RowIndex].Value;
            DataTable dt = ViewState["TablaTemporal"] as DataTable;

            foreach (DataRow item in dt.Rows)
            {
                String data = item.ItemArray[0].ToString();

                if (item["id"].ToString().Equals(llave))
                {

                    dt.Rows.Remove(item);
                    break;
                }
            }



            GridDetalle.DataSource = dt;
            GridDetalle.DataBind();
        }

        protected void GridDetalle_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
           
        }

        private void NumeracionActual() {
            labelErrorCp.Text = "";
            try
            {
                TipoDocumento_BL tipobl = new TipoDocumento_BL();
                TipoDocumentoCpVenta tipocp= tipobl.obtenerTipoCpVentaPorId(ComboTipoDocumento.SelectedItem.Value);
                txtCodigo0.Text = tipocp.Serie_Codigo+"-"+(tipocp.NumeracionActual + 1).ToString().PadLeft(tipocp.Numeracion_Longitud,'0');

            }
            catch (Exception ex)
            {
                labelErrorCp.Text = ex.Message;
            }
        }

        protected void ComboTipoDocumento_SelectedIndexChanged(object sender, EventArgs e)
        {
            NumeracionActual();
           
        }

        protected void UpdatePanel2_Disposed(object sender, EventArgs e)
        {

        }

        protected void UpdatePanel2_PreRender(object sender, EventArgs e)
        {

        }

        protected void UpdatePanel2_Init(object sender, EventArgs e)
        {

        }

        protected void UpdatePanel2_Load(object sender, EventArgs e)
        {

        }

        protected void UpdatePanel2_Unload(object sender, EventArgs e)
        {
         
        }  
    }
}